// 引用接口API
const apis = require('../../utils/httpAPI')
let app = getApp()
let socket = null
Page({
  data: {
    socket_open: false, //判断连接是否打开
    sendText: "", //发送的消息
    serverMsg: [], //接受的服务端的消息
    otherInfo: '', // 聊天对象的信息
    selfInfo: '', //  自己的信息
    scrolltop: 1000
  },

  /**输入内容 */
  sendTextBind: function (e) {
    this.setData({
      sendText: e.detail.value
    });
    console.log(this.data.sendText);
  },
  /**发送消息 */
  sendBtn: function (e) {
    console.log('发送消息事件！');
    var msgJson = {
      self_id: this.data.selfInfo.id, // 用户id
      other_id: this.data.otherInfo.id, // 聊天对象的id
      current_time: new Date(), // 发送消息的时间
      msg: this.data.sendText, //发送的消息 
    }
    if (msgJson.msg) {
      //发送消息
      this.send_socket_message(JSON.stringify(msgJson));
      this.setData({
        sendText: "" //发送消息后，清空文本框
      });
    }

  },
  onLoad() {
    // app.login();
    this.setData({
      selfInfo: app.globalData.selfInfo,
      otherInfo: app.globalData.otherInfo
    });
    //初始化
    this.wssInit();

  },
  wssInit() {
    var that = this;
    //建立连接
    socket = wx.connectSocket({
      url: apis.host2,
      header: {
        self_id: that.data.selfInfo.id,
        other_id: that.data.otherInfo.id
      },
      success: res => {
        console.log('创建连接成功！')
      }
    })
    //监听WebSocket连接打开事件。
    socket.onOpen(function (res) {
      console.log('WebSocket连接已打开！');
      that.setData({
        socket_open: true
      });
    });
    // 监听WebSocket连接关闭事件
    socket.onClose(function () {
      console.log('连接关闭成功！')
      that.setData({
        socket_open: false
      });
    })
    //监听WebSocket接受到服务器的消息事件。
    socket.onMessage(function (res) {
      console.log('收到服务器内容：', res);
      var server_msg = JSON.parse(res.data);
      console.log(server_msg, '===')
      if (server_msg.length > 0) {
        var msgnew = [];
        msgnew = that.data.serverMsg.concat(server_msg);
        console.log(msgnew.length);
        that.setData({
          serverMsg: msgnew,
          scrolltop: msgnew.length * 200
        });

      }
    });
    //监听WebSocket错误。
    wx.onSocketError(function (res) {
      console.log('WebSocket连接打开失败，请检查！', res)
    });
  },
  send_socket_message: function (msg) {
    //socket_open，连接打开的回调后才会为true，然后才能发送消息
    if (this.data.socket_open) {
      socket.send({
        data: msg
      })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    socket.onClose
    socket = null
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

})